package pyip.lib.javalearn.algorithm.sort;


/**
 * 冒泡排序<br>
 * 基本思想：在要排序的一组数中，对当前还未排好序的范围内的全部数，自上而下对相邻的两个数依次进行比较和调整，让较大的数往下沉，较小的往上冒。<br>
 * 即：每当两相邻的数比较后发现它们的排序与排序要求相反时，就将它们互换。
 * @author yepeng
 * @date 2015年9月2日
 */
public class BubbleSort implements Sort {

    @Override
    public void sort(int[] arr, boolean asc) {
        if (arr == null || arr.length <= 1) {
            return;
        }
        int temp = 0;
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                if (asc) {
                    if (arr[j] > arr[j + 1]) {
                        temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
                    }
                } else {
                    if (arr[j] < arr[j + 1]) {
                        temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
                    }
                }
            }
//            System.out.println("bubbleSort" + i + ", " + Arrays.toString(arr));
        }
    }

}
